package tw.raybird.walker.officereader;

import java.awt.Component;
import java.awt.FlowLayout;
import java.io.Closeable;
import java.io.File;
import java.net.Socket;
import java.sql.Connection;
import java.sql.Statement;

import javax.swing.JComponent;
import javax.swing.JPanel;

public class Util {
	/**
	 * 釋放資源。
	 * 
	 * @param resource
	 *            欲釋放的資源。
	 */
	public static void close(Closeable resource) {
		try {
			resource.close();
		} catch (Throwable e) {
		}
	}

	/**
	 * 釋放資源。
	 * 
	 * @param socket
	 *            欲釋放的資源。
	 */
	public static void close(Socket socket) {
		try {
			socket.close();
		} catch (Throwable e) {
		}
	}

	/**
	 * 關閉連線。
	 * 
	 * @param c
	 *            欲關閉的連線。
	 */
	public static void close(Connection c) {
		try {
			c.close();
		} catch (Throwable e) {
		}
	}

	/**
	 * 關閉敘述。
	 * 
	 * @param s
	 *            欲關閉的敘述。
	 */
	public static void close(Statement s) {
		try {
			s.close();
		} catch (Throwable e) {
		}
	}
	
	/**
	 * 外部呼叫工具程式進行文件轉檔
	 * @param source
	 * @param out
	 * @return
	 */
	public static boolean convert2txt(String source,String out){
		boolean result = Boolean.FALSE;
		if( source == null || source.length() == 0){
			return result; 
		}
		
		return result; 
	}
	
	/**
	 * 建立單行面板。
	 * @param components 欲加入的元件。
	 * @return 包含所有元件的面板。
	 */
	public static JComponent getRow(Component... components)
	{
		return getRow(FlowLayout.LEFT, components);
	}

	/**
	 * 建立單行面板。
	 * 使用FlowLayout的對齊常數。
	 * @param align 元件對齊。
	 * @param components 欲加入的元件。
	 * @return 包含所有元件的面板。
	 */
	public static JComponent getRow(int align, Component... components)
	{
		JPanel row = new JPanel(new FlowLayout(align, 5, 3));
		for(Component c : components)
			row.add(c);
		return row;
	}
	
	/**
	 * 刪除路徑
	 * @param dir 欲刪除路徑
	 * @return
	 */
	public static boolean delete(File dir){
		if(!dir.exists()){
			return true;
		}
		if(dir.isFile())
			return dir.delete();
		else{
			try
			{
				// 遞迴刪除
				for(File f : dir.listFiles())
				{
					if(f.isDirectory())
						delete(f);
					else
						f.delete();
				}
				return dir.delete();
			}
			catch(Exception e)
			{
				org.apache.log4j.Logger.getRootLogger().error("可能為遞迴過深。", e);
			}
			return false;
		}
	}
}
